package internal

import "fmt"

type Animals interface {
	Move() // 动物能动
	Eat()
	Feel()
	Thinking()
}

type Duck struct {
}

func (duck *Duck) Move() {
	fmt.Println("Duck Move")
}
func (duck *Duck) Eat() {

}
func (duck *Duck) Feel() {

}
func (duck *Duck) Thinking() {

}

type Dog struct {
}

func (dog *Dog) Move() {
	fmt.Println("dog Move")

}
func (dog *Dog) Eat() {

}
func (dog *Dog) Feel() {

}

func (dog *Dog) Thinking() {

}

func RunInterface() {

	dog := &Dog{}
	duck := &Duck{}
	/*
		假如中间有很多
	*/

	al := make([]Animals, 0)
	al = append(al, dog, duck)

	for _, v := range al {
		v.Move()
	}

	// maddy   邮箱服务， 也是go语言
	// dog.Move()
	// duck.Move()
	// var A Animals
	// A = &Dog{}
	// A.Move()
}

// 数据类型
// if else
// 计算

//
// 面大对象：   封装   继承  多态
// 封装: 为了少写代码， 少改动代码,  代码整洁
// for   循环,  控制数量
// 函数：   封装  为了功能   1
